package com.uzhie.web.dao;

import com.uzhie.web.module.Catalog;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.session.RowBounds;
import tk.mybatis.mapper.common.Mapper;

import java.util.List;

/**
 * 目录信息表
 * create by zhangdequan
 */
public interface CatalogDAO extends Mapper<Catalog> {

    /**
     * 查询返回所有的目录数据
     *
     * @return
     */
    List<Catalog> selectAllCatalog(@Param(value = "parentId") String parentId , RowBounds rowBounds);


    /**
     * 查询返回所有的目录数据(不分页,树状显示)
     *
     * @return
     */
    List<Catalog> selectAllCatalogToTree();

    /**
     * 返回所有车辆数据,包含车辆目录节点,在用户绑定车辆关系时使用, 只查询了车辆名称和id属性
     * created by lilongfei
     * @return
     **/
//    List<Catalog> selectAllCatalogAndCar(@Param("departId") String departId);

    /**
     * 根据用户从属部门,构建部门菜单树 ，非管理功能使用
     * created by lilongfei
     * @return
     **/
    List<Catalog> selectCatalogByUserDepart(@Param("departId") String departId);


    /**
     * 根据用户从属部门,构建部门菜单树 ，管理功能使用
     * created by lilongfei
     * @return
     **/
    List<Catalog> selectCatalogByUserDepartForAdmin(@Param("departId") String departId);

    /**
     * 查询目录详情
     *
     * @param catalogId 目录id
     * @return
     */
    Catalog selectCatalogById(@Param(value = "catalogId") String catalogId);

    /**
     * 根据目录id,更新目录状态信息
     *
     * @param catalogId
     * @param status
     * @return
     */
    int updateCatalogStatusById(@Param(value = "catalogId") String catalogId, @Param(value = "status") Integer status);


    /**
     * 返回人员当前关联的部门范围，用作管理权限判定使用
     * @param userId
     * @return
     */
    List<Catalog> selectCatalogByUserId(@Param("userId") String userId);

    /**
     * 返回人员当前关联的部门范围，用作管理权限判定使用,不含车辆信息
     * @param userId
     * @return
     */
    List<Catalog> selectCatalogByUserIdNoCar(@Param("userId") String userId);
    /**
     * 判断特定目录类型是否被引用
     * create by lilongfei
     * @param type 0 没有 1 有
     * @return
     */
    int baseDataHasBeUsed(@Param("type") String type);


    /**
     * 返回所有车辆数据,包含车辆目录节点,在用户绑定车辆关系时使用, 只查询了车辆名称和id属性
     * created by lilongfei
     * @return
     **/
    List<Catalog> selectAllCatalogtoBinding();

    /**
     * 判断当前目录id是否被其他对象引用
     * @param catalogId
     * @return
     */
    int catalogHasBeUsed(@Param("catalogId") String catalogId);

}
